/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DSB.Controller;

import DSB.Model.Kaart.Enums.ItemChanged;
import DSB.Model.Kaart.Map;
import DSB.Model.Toerist.Toerist;
import java.awt.image.BufferedImage;
import java.util.Observable;

/**
 *
 * @author Gebruiker
 * Hieronder wordt de klasse aangemaakt die gebruik maakt van het Observable pattern. 
 * De variabele ItemChanged wordt toegepast richting de GUI 
 */
public class ToeristController extends Observable {

    private static Toerist _toerist = Toerist.getInstance();
    private static ToeristController toeristcontroller;// = new ToeristController();
    private static ItemChanged change = ItemChanged.NONE;
    
    private ToeristController(){}

    /**
     *
     * @return toeristcontroller, kijkt middels een singleton pattern dat toeristcontroller
     * maar 1 x geinstancierd wordt.
     */
    public static ToeristController getInstance() {
        if (toeristcontroller == null) {
            toeristcontroller = new ToeristController();
        }
        return toeristcontroller;
    }

    /**
     *
     * @param title
     * @return
     */
    public String GetResource(String title) {
        return _toerist.getResource(title);
    }
    
    
    /**
     *
     * @param lang Controle van de observer van de statusverandering en doormelden aan de observer
     */
    public void ChangeLanguage(int lang) {
        _toerist.ChangeLanguage(lang);
        change = ItemChanged.LANGUAGE;
        setChanged();
        notifyObservers();
    }

    /**
     *
     * @return ophalen van de huidige ingestelde taal.
     */
    public String getLanguage() {
        return _toerist.getLanguage();
    }

    /**
     *
     * @param eenheid Controle van de observer van de statusverandering en doormelden aan de observer
     */
    public void ChangeMeetEenheid(int eenheid) {
        _toerist.ChangeMeetEenheid(eenheid);
        change = ItemChanged.METRIC;
        setChanged();
        notifyObservers();
    }

    /**
     *
     * @return ophalen van de huidige ingestelde meeteenheid
     */
    public String GetMeetEenheidName() {
        return _toerist.GetMeetEenheidName();
    }

    /**
     *
     * @param map aanmaken van de map.
     */
    public void setMap(Map map) {
        _toerist.setMap(map);
    }

    //public void SaveMapSettings(BufferedImage image)
    //{
    //new Toerist().getInstance().setMap(image);
    //}
    
    /**
     *
     * @return teruggave van de map aan de toerist
     */
    public BufferedImage getMap() {
        return _toerist.getMap();
    }

    /**
     *
     * @return 
     */
    public ItemChanged getChange() {
        ItemChanged item = change;

        return item;
    }
}
